package 面试经典150题.双指针;

import java.util.Map;

/**
 * @author tmh
 * @date 2024/6/12 20:47
 * @description
 */
public class T11盛最多水的容器 {
    //暴力解法 两个循环
//    public int maxArea(int[] height) {
//        int max = 0;
//        for (int i = 0; i < height.length - 1; i++) {
//            for (int j = i + 1; j < height.length; j++) {
//                int area = (j - i) * Math.min(height[i], height[j]);
//                max = Math.max(max, area);
//            }
//        }
//        return max;
//    }

    /**
     * 双指针 降低时间复杂度
     *
     * @param height
     * @return
     */
    public int maxArea(int[] height) {
        int max = 0;
        for (int i = 0, j = height.length - 1; i < j; ) {
            //谁大就往谁的方向靠拢
            int minHeight = height[i] <= height[j] ? height[i++] : height[j--];
            //因为上面的j--和i++,缩短了一个距离，所以下面就是要加回去
            max = Math.max(max, (j - i + 1) * minHeight);
        }
        return max;
    }
}
